/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ac.persistence;
import ac.entities.ProveedorNatural;
import java.io.IOException;
import java.sql.SQLException;
import com.ibatis.sqlmap.client.SqlMapClient;
import java.util.ArrayList;
import java.util.HashMap;

/**
 * Gestiona la persistencia de Proveedores Naturales
 * @author prometheus
 */
public class PersistProveedorNatural {

    /**
     * Crea un nuevo registro de proveedor natural
     * @param pn el proveedor natural a ser insertado
     * @return true si la operación fue exitosa
     */
    public boolean insertProveedorNatural (ProveedorNatural pn) {
        boolean resultado = false;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            sqlMap.insert("insertProveedorNat", pn);
            resultado = true;
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } finally {
            return resultado;
        }
    }

    /**
     * busca el id del último proveedor natural registrado
     * @return el id mayor en la tabla PROVEEDORES_NAT
     */
    public int ultimoProveedorNatural() {
        int resultado = 0;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            resultado = (Integer) sqlMap.queryForObject("ultimoProveedorNatural");
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            return resultado;
        }
    }

    public ArrayList<ProveedorNatural> todosProveedoresNaturales() {
        ArrayList<ProveedorNatural> todos = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            todos = (ArrayList) sqlMap.queryForList("buscarTodosProvNat");
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return todos;
        }
    }

    public boolean updateProveedorNatural(int idProv, String tlf, String direccion) {
        boolean result = false;
        HashMap params = new HashMap();
        params.put("id", idProv);
        params.put("telefono", tlf);
        params.put("direccion", direccion);
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            sqlMap.update("actualizarProvNatTlf", params);
            sqlMap.update("actualizarProvNatDir", params);
            result = true;
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return result;
        }
    }

}
